package lv.clientedisqueria.view.principal;

import java.awt.Component;
import java.util.Observable;
import java.util.Observer;

import javax.swing.JPanel;
import javax.swing.JTabbedPane;

import lv.clientedisqueria.controller.principal.PrincipalController;
import lv.clientedisqueria.model.estilo.EstiloModel;
import lv.clientedisqueria.model.grupo.GrupoModel;
import lv.clientedisqueria.model.ingeniero.IngenieroModel;
import lv.clientedisqueria.model.instrumento.InstrumentoModel;
import lv.clientedisqueria.model.musico.MusicoModel;
import lv.clientedisqueria.model.tema.TemaModel;
import lv.clientedisqueria.model.tipoSoporte.TipoSoporteModel;
import lv.clientedisqueria.model.usuario.UsuarioModel;
import lv.clientedisqueria.view.estilo.EstiloPanel;
import lv.clientedisqueria.view.grupo.GrupoPanel;
import lv.clientedisqueria.view.instrumento.InstrumentoPanel;
import lv.clientedisqueria.view.ingeniero.IngenieroPanel;
import lv.clientedisqueria.view.musico.MusicoPanel;
import lv.clientedisqueria.view.tema.TemaPanel;
import lv.clientedisqueria.view.tipoSoporte.TipoSoportePanel;
import lv.clientedisqueria.view.usuario.UsuarioPanel;
import lv.clientedisqueria.view.util.ButtonTabComponent;

@SuppressWarnings("serial")
public class PrincipalTabbedPaneView extends JTabbedPane implements Observer {


	private void adherirTab(String titulo, Component tab) {
		this.add(titulo, tab);
		this.setTabComponentAt(this.getTabCount()-1, new ButtonTabComponent(this));
		this.validate();
		this.repaint();
	}

	@Override
	public void update(Observable observable, Object object) {
		if(observable != null) {
			if(object!=null){
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.TEMA)){
					this.adherirTab("Tema", crearTemaPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.DISCO)){
					this.adherirTab("Disco", createDiscoPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.ADMIN_USUARIO)){
					this.adherirTab("Admin Usuario", crearUsuarioPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.INGENIERO)){
					this.adherirTab("ABM Ingenieros", createrABMIngenierosPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.MUSICO)){
					this.adherirTab("ABM Musicos", crearMusicoPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.INSTRUMENTO)){
					this.adherirTab("Instrumento", crearInstrumentoPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.ESTILO)){
					this.adherirTab("Estilo", crearEstiloPanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.TIPOSOPORTE)){
					this.adherirTab("Tipo Soporte", crearTipoSoportePanel());
				}
				if( String.valueOf(object).equalsIgnoreCase(PrincipalController.GRUPO)){
					this.adherirTab("Grupo", crearGrupoPanel());
				}
			}
		}
	}

	private GrupoPanel crearGrupoPanel() {
		GrupoPanel grupoPanel = new GrupoPanel(new GrupoModel());
		return grupoPanel;
	}

	private TemaPanel crearTemaPanel() {
		TemaPanel temaPanel = new TemaPanel(new TemaModel());
		return temaPanel;
	}
	
	private UsuarioPanel crearUsuarioPanel() {
		return new UsuarioPanel(new UsuarioModel());
	}
	
	private Component crearMusicoPanel() {
		return new MusicoPanel(new MusicoModel());
	}

	private Component createrABMIngenierosPanel() {
		return new IngenieroPanel(new IngenieroModel());
	}

	private Component createDiscoPanel() {
		// TODO Auto-generated method stub
		return new JPanel();
	}
	
	private InstrumentoPanel crearInstrumentoPanel() {
		return new InstrumentoPanel(new InstrumentoModel());
	}
	
	private EstiloPanel crearEstiloPanel() {
		return new EstiloPanel(new EstiloModel());
	}
	
	private TipoSoportePanel crearTipoSoportePanel() {
		return new TipoSoportePanel(new TipoSoporteModel());
	}
}
